const TOKEN_KEY  = 'itcast_geek_pc'

const getToken = () => localStorage.getItem(TOKEN_KEY)
const setToken = token => localStorage.setItem(TOKEN_KEY,token)
const clearToken = () => localStorage.removeItem(TOKEN_KEY)
const isAuth = () => !!getToken()

export { 
  getToken,
  setToken,
  clearToken,
  isAuth
}

/**
 * 这段代码定义了一个叫做isAuth的函数，它检查用户是否已经被认证（即是否已经登录）。

具体来说，isAuth函数在被调用时，会先调用getToken()函数来获取存储在localStorage中的token。这个token通常是服务器在用户登录时颁发的，用于验证用户的身份。

然后，它使用了两次否定运算符!!进行类型转换，将getToken()的结果转换成布尔值。如果token有效（即不为空也不是undefined、null、0、NaN或空字符串），!!getToken()的结果就是true，意味着用户已经被认证；而如果token无效，!!getToken()的结果就是false，意味着用户没有被认证，也就是说用户没有登录。

总的来说，const isAuth = () => !!getToken()的功能就是检查用户是否已经登录。

在 JavaScript 中，双否定操作符(!!)常用于将非布尔值强制转换为布尔值。换言之，其目的是获取任何值的布尔版本。

这是如何运作的:

第一个!(非操作符)：返回一个布尔值，它是操作数的反向值。换言之，如果操作数为真，它返回false；如果操作数为假，它将返回true。假值在 JavaScript 中是0, -0, null, false, NaN, undefined或空字符串("")，任何其它值都被认为是真值。
第二个!(非操作符)： 操作上述返回的布尔值，并再次颠倒其值。这意味着原始真值转换为true，假值转换为false。
所以!!操作符可以用于将任何值转换为布尔值（true或false），并在此过程中保留了操作数的真假值，使其成为非常实用的工具，特别是当你需要明确的布尔值结果时。
 */